home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 001 / pibt40s1.arc / GETCONFI.MOD < prev    next >
Text File  |  1987-08-12  |  5KB  |  110 lines

  1. (*--------------------------------------------------------------------------*)
  2. (*      Get_Config_File_Line --- Get one parameter line from config file    *)
  3. (*--------------------------------------------------------------------------*)
  4.  
  5. FUNCTION Get_Config_File_Line(  VAR Config_File : Text_File;
  6.                                 VAR Param_Num   : INTEGER;
  7.                                 VAR Param_Str   : AnyStr;
  8.                                 VAR Param_Ival  : INTEGER;
  9.                                 VAR Param_Rval  : REAL ) : BOOLEAN;
  10.  
  11. (*--------------------------------------------------------------------------*)
  12. (*                                                                          *)
  13. (*     Function:  Get_Config_File_Line                                      *)
  14. (*                                                                          *)
  15. (*     Purpose:   Reads and interprets one line of configuration file       *)
  16. (*                                                                          *)
  17. (*     Calling Sequence:                                                    *)
  18. (*                                                                          *)
  19. (*        QGot := Get_Config_File_Line(  VAR Config_File : Text_File;       *)
  20. (*                                       VAR Param_Num   : INTEGER;         *)
  21. (*                                       VAR Param_Str   : AnyStr;          *)
  22. (*                                       VAR Param_Ival  : INTEGER;         *)
  23. (*                                       VAR Param_Rval  : REAL ) : BOOLEAN;*)
  24. (*                                                                          *)
  25. (*           Config_File --- the configuration file                         *)
  26. (*           Param_Num   --- parameter number of this line                  *)
  27. (*           Param_Str   --- string value of parameter                      *)
  28. (*           Param_Ival  --- Integer value of parameter                     *)
  29. (*           Param_Rval  --- Real value of parameter                        *)
  30. (*                                                                          *)
  31. (*           Qgot        --- TRUE if configuration line returned;           *)
  32. (*                           FALSE if end-of-file encountered on            *)
  33. (*                           configuration file.                            *)
  34. (*                                                                          *)
  35. (*--------------------------------------------------------------------------*)
  36.  
  37. VAR
  38.    I:       INTEGER;
  39.    S:       AnyStr;
  40.    PName:   STRING[2];
  41.    L:       INTEGER;
  42.    NumDone: BOOLEAN;
  43.  
  44. BEGIN (* Get_Config_File_Line *)
  45.                                    (* Initialize parameter values *)
  46.    Param_Num  := 0;
  47.    Param_Str  := '';
  48.    Param_Ival := 0;
  49.    Param_Rval := 0;
  50.  
  51.    IF NOT EOF( Config_File ) THEN
  52.       BEGIN
  53.  
  54.          Get_Config_File_Line := TRUE;
  55.  
  56.                                    (* Indicate line from configuration file *)
  57.          READLN( Config_File , S );
  58.  
  59.                                    (* Pick up parameter name.  Only first 2 *)
  60.                                    (* characters matter, skip rest up to    *)
  61.                                    (* '='.                                  *)
  62.  
  63.          S         := S + '    ';
  64.          PName     := UpCase( S[1] ) + UpCase( S[2] );
  65.          L         := LENGTH( S );
  66.          I         := 1;
  67.  
  68.          WHILE( ( I <= L ) AND ( S[I] <> '=' ) ) DO
  69.             I := SUCC( I );
  70.  
  71.          Param_Str := Trim( Substr( S, ( I + 1 ), LENGTH( S ) - I ) );
  72.  
  73.                                    (* Search for parameter.           *)
  74.                                    (* If found, convert to numeric if *)
  75.                                    (* appropriate                     *)
  76.  
  77.          Param_Num := Look_Up_Parameter( PName );
  78.  
  79.          IF ( Param_Num > 0 ) THEN
  80.             BEGIN
  81.  
  82.                   L       := LENGTH( Param_Str );
  83.                   NumDone := ( L = 0 );
  84.                   I       := 0;
  85.  
  86.                   WHILE ( NOT NumDone ) DO
  87.                      BEGIN
  88.                         I := I + 1;
  89.                         IF Param_Str[I] IN ['0'..'9'] THEN
  90.                            Param_Ival := Param_Ival * 10 +
  91.                                          ORD( Param_Str[I] ) - ORD( '0' );
  92.                         NumDone := NumDone OR ( I >= L ) OR
  93.                                    ( Param_Str[I] = ' ');
  94.                      END;
  95.  
  96.                   IF ( L > 0 ) THEN
  97.                      IF ( UpCase( Param_Str[1] ) = 'Y' ) THEN
  98.                         Param_Ival := 1;
  99.  
  100.                Param_Rval := Param_Ival;
  101.  
  102.             END;
  103.  
  104.       END
  105.  
  106.    ELSE
  107.       Get_Config_File_Line := FALSE;
  108.  
  109. END   (* Get_Config_File_Line *);
  110.